/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package agenda;

import agenda.beans.Compromisso;
import agenda.beans.Evento;
import agenda.beans.Tarefa;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SpringLayout.Constraints;
import org.netbeans.lib.awtextra.AbsoluteConstraints;
import org.netbeans.lib.awtextra.AbsoluteLayout;
import sun.util.BuddhistCalendar;

/**
 *
 * @author Fran
 */
public class PanelDia extends javax.swing.JPanel {

    static NumberFormat formatter = new DecimalFormat("00");

    public void abrePanelDia(int dia, int mes, int ano) throws FileNotFoundException, IOException, ClassNotFoundException{
        //Esse arraylist vai receber a lista de eventos
        Compromisso comp = new Compromisso();
        ArrayList<Evento> compromissos = comp.deserializa();

        this.setSize(800, HEIGHT);

        //Cria um layout com n linhas e 1 colunas
        this.setLayout(new GridLayout(compromissos.size() + 1, 1));

        JPanel horas = new JPanel();
        horas.setLayout(new GridLayout(1, 24));
        for (int i = 0; i < 24; i++) {
            horas.add(new JLabel(formatter.format(i)+"h"));
        }


        this.add(horas);



        for (Evento evento : aniversario) {
                    if(achou){break;}
                    Aniversario aniv = (Aniversario) evento;
                    if ((aniv.getDia().getDay() == diaCorrente.getDay() && aniv.getDia().getMonth() == diaCorrente.getMonth())
                         || (aniv.getFesta().getDay() == diaCorrente.getDay() && aniv.getFesta().getMonth() == diaCorrente.getMonth() && aniv.getFesta().getYear() == diaCorrente.getYear())) {
                        achou = true;
                        novoBotao.setBackground(new java.awt.Color(255, 192, 246));
                        novoBotao.setForeground(new java.awt.Color(255, 0, 0));
                    }
                }
                for (Evento evento : tarefas) {
                    if(achou){break;}
                    Tarefa taf = (Tarefa) evento;
                    if (taf.getDataConclusao().getDay() == diaCorrente.getDay() && taf.getDataConclusao().getMonth() == diaCorrente.getMonth() && taf.getDataConclusao().getYear() == diaCorrente.getYear()){
                        achou = true;
                        novoBotao.setBackground(new java.awt.Color(255, 192, 246));
                        novoBotao.setForeground(new java.awt.Color(255, 0, 0));
                    }
                }
                for (Evento evento : compromisso) {
                    if(achou){break;}
                    Compromisso comp = (Compromisso) evento;
                    if (diaCorrente.getDay() >= comp.getDataInicio().getDay() &&
                        diaCorrente.getMonth() >= comp.getDataInicio().getMonth() &&
                        diaCorrente.getYear() >= comp.getDataInicio().getYear() &&
                        diaCorrente.getDay() <= comp.getDataFim().getDay() &&
                        diaCorrente.getMonth() <= comp.getDataFim().getMonth() &&
                        diaCorrente.getYear() <= comp.getDataFim().getYear()){

                        achou = true;
                        novoBotao.setBackground(new java.awt.Color(255, 192, 246));
                        novoBotao.setForeground(new java.awt.Color(255, 0, 0));
                    }
                }
                for (Evento evento : feriado) {
                    if(achou){break;}
                    Feriado fer = (Feriado) evento;
                    if (diaCorrente.getDay() == fer.getData().getDay() &&
                        diaCorrente.getMonth() == fer.getData().getMonth() &&
                        diaCorrente.getYear() == fer.getData().getYear()) {

                        achou = true;
                        novoBotao.setBackground(new java.awt.Color(255, 192, 246));
                        novoBotao.setForeground(new java.awt.Color(255, 0, 0));
                    }
                }














        for (Evento evento : compromissos) {
            Compromisso compromisso = (Compromisso) evento;

            if (diaCorrente.getDay() >= comp.getPeriodo()getDataInicio().getDay() &&
                diaCorrente.getMonth() >= comp.getDataInicio().getMonth() &&
                diaCorrente.getYear() >= comp.getDataInicio().getYear() &&
                diaCorrente.getDay() <= comp.getDataFim().getDay() &&
                diaCorrente.getMonth() <= comp.getDataFim().getMonth() &&
                diaCorrente.getYear() <= comp.getDataFim().getYear()){

            // if (((Tarefa) tarefa).getDataConclusao() == data) {
            JButton botaodados = new JButton();
            botaodados.addMouseListener(new MouseAdapter() {

                public void mouseClicked(MouseEvent evt) {
                    deuClick(evt);
                }
            });

            JPanel event = new JPanel();

            event = arrumaOEvento(33 * compromisso.getDataInicio().getHours(), 33 * (24 - compromisso.getDataFim().getHours()), botaodados, 33 * (compromisso.getDataFim().getHours() - compromisso.getDataInicio().getHours()));

            this.add(event);

            botaodados.setToolTipText(Integer.toString(((Compromisso) compromisso).getId()));

            //}
        }
    }



    /** Creates new form PanelMes */
    public PanelDia() throws FileNotFoundException, IOException, ClassNotFoundException {
        //Esse arraylist vai receber a lista de eventos
        Compromisso comp = new Compromisso();
        ArrayList<Evento> compromissos = comp.deserializa();

        this.setSize(800, HEIGHT);

        //Cria um layout com n linhas e 1 colunas
        this.setLayout(new GridLayout(compromissos.size() + 1, 1));

        JPanel horas = new JPanel();
        horas.setLayout(new GridLayout(1, 24));
        for (int i = 0; i < 24; i++) {
            horas.add(new JLabel(formatter.format(i)+"h"));
        }
        

        this.add(horas);

        for (Evento evento : compromissos) {
            Compromisso compromisso = (Compromisso) evento;

            // if (((Tarefa) tarefa).getDataConclusao() == data) {
            JButton botaodados = new JButton();
            botaodados.addMouseListener(new MouseAdapter() {

                public void mouseClicked(MouseEvent evt) {
                    deuClick(evt);
                }
            });

            JPanel event = new JPanel();

            event = arrumaOEvento(33 * compromisso.getDataInicio().getHours(), 33 * (24 - compromisso.getDataFim().getHours()), botaodados, 33 * (compromisso.getDataFim().getHours() - compromisso.getDataInicio().getHours()));

            this.add(event);

            botaodados.setToolTipText(Integer.toString(((Compromisso) compromisso).getId()));

            //}
        }
    }

    private void deuClick(MouseEvent evt) {
        JButton btn = (JButton) evt.getComponent();
        System.out.print(btn.getToolTipText());
    }

    private JPanel arrumaOEvento(int tamanhoEspaco1, int tamanhoEspaco2, JButton botaoEvento, int tamanhoBotao){
        JPanel event = new javax.swing.JPanel();
        JPanel espacoEmBranco1 = new JPanel();
        JPanel espacoEmBranco2 = new JPanel();

        event.setLayout(new AbsoluteLayout());
        event.add(espacoEmBranco1, new AbsoluteConstraints(0, 0, tamanhoEspaco1, 10));
        event.add(botaoEvento, new AbsoluteConstraints(tamanhoEspaco1, 0, tamanhoBotao, 10));
        event.add(espacoEmBranco2, new AbsoluteConstraints(tamanhoEspaco1+tamanhoBotao, 0, tamanhoEspaco2, 10));


        return event;
    }



}
